import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import '../../../common/services/index.dart';
import '../../../common/routers/index.dart';
import '../../../common/utils/index.dart';
import '../../system/main/controller.dart';

/// 设置页面控制器
/// 负责设置页面的业务逻辑处理
class SettingsController extends GetxController {
  static const String tag = 'SettingsController';
  
  // 服务依赖
  UserService get _userService => Get.find<UserService>();
  
  // 响应式变量
  var isLoading = false.obs;
  
  /// 账号与管理
  void onAccountManageTap() {
    debugPrint('$tag: 点击账号与管理');
    LoadingUtil.info('账号与管理功能开发中');
  }
  
  /// 所选区域
  void onRegionSelectTap() {
    debugPrint('$tag: 点击所选区域');
    LoadingUtil.info('区域选择功能开发中');
  }
  
  /// 隐私协议
  void onPrivacyPolicyTap() {
    debugPrint('$tag: 点击隐私协议');
    LoadingUtil.info('隐私协议功能开发中');
  }
  
  /// 用户协议
  void onUserAgreementTap() {
    debugPrint('$tag: 点击用户协议');
    LoadingUtil.info('用户协议功能开发中');
  }
  
  /// 关于我们
  void onAboutUsTap() {
    debugPrint('$tag: 点击关于我们');
    LoadingUtil.info('关于我们功能开发中');
  }
  
  /// 数据推广服务协议
  void onDataPromotionAgreementTap() {
    debugPrint('$tag: 点击数据推广服务协议');
    LoadingUtil.info('数据推广服务协议功能开发中');
  }
  
  /// 广告运维服务协议
  void onAdServiceAgreementTap() {
    debugPrint('$tag: 点击广告运维服务协议');
    LoadingUtil.info('广告运维服务协议功能开发中');
  }
  
  /// 切换账号
  void onSwitchAccountTap() {
    debugPrint('$tag: 点击切换账号');
    
    if (!_userService.isLoggedIn) {
      LoadingUtil.error('请先登录');
      return;
    }
    
    // 显示确认对话框
    Get.dialog(
      AlertDialog(
        title: const Text('切换账号'),
        content: const Text('切换账号将退出当前登录，是否继续？'),
        actions: [
          TextButton(
            onPressed: () => Get.back(),
            child: const Text('取消'),
          ),
          TextButton(
            onPressed: () {
              Get.back();
              _performLogout(switchAccount: true);
            },
            child: const Text(
              '确定',
              style: TextStyle(color: Colors.red),
            ),
          ),
        ],
      ),
    );
  }
  
  /// 联系客服
  void onContactServiceTap() {
    debugPrint('$tag: 点击联系客服');
    LoadingUtil.info('联系客服功能开发中');
  }
  
  /// 退出登录
  void onLogoutTap() async {
    debugPrint('$tag: 点击退出登录');
    
    if (!_userService.isLoggedIn) {
      LoadingUtil.error('您还未登录');
      return;
    }
    
    // 显示确认对话框
    final result = await Get.dialog<bool>(
      AlertDialog(
        title: const Text('确认退出'),
        content: const Text('您确定要退出登录吗？'),
        actions: [
          TextButton(
            onPressed: () => Get.back(result: false),
            child: const Text('取消'),
          ),
          TextButton(
            onPressed: () => Get.back(result: true),
            child: const Text(
              '退出',
              style: TextStyle(color: Colors.red),
            ),
          ),
        ],
      ),
    );
    
    if (result == true) {
      await _performLogout();
    }
  }
  
  /// 执行退出登录
  Future<void> _performLogout({bool switchAccount = false}) async {
    try {
      isLoading.value = true;
      
      debugPrint('$tag: 开始执行退出登录流程');
      
      // 调用用户服务退出登录
      final success = await _userService.logout().timeout(
        const Duration(seconds: 10),
        onTimeout: () {
          debugPrint('$tag: 退出登录超时');
          return false;
        },
      );
      
      if (success) {
        debugPrint('$tag: 退出登录成功');
        
        // 显示成功提示
        LoadingUtil.success(switchAccount ? '已退出当前账号' : '已成功退出登录');
        
        // 短暂延迟让用户看到成功提示
        await Future.delayed(const Duration(milliseconds: 500));
        
        // 返回上一页（回到我的页面）
        Get.back();
        
        // 重置MainController到首页状态
        _resetMainControllerToHome();
        
        // 如果是切换账号，跳转到登录页
        if (switchAccount) {
          await Future.delayed(const Duration(milliseconds: 300));
          Get.toNamed(RouteNames.systemLogin);
        }
        
      } else {
        debugPrint('$tag: 退出登录失败');
        LoadingUtil.error('退出登录失败，请重试');
      }
      
    } catch (e) {
      debugPrint('$tag: 执行退出登录异常: $e');
      LoadingUtil.error('退出登录时发生错误');
    } finally {
      isLoading.value = false;
    }
  }
  
  /// 重置MainController到首页状态
  void _resetMainControllerToHome() {
    try {
      final mainController = Get.find<MainController>();
      mainController.resetToHomeAfterLogout();
      debugPrint('$tag: 已重置MainController到首页');
    } catch (e) {
      debugPrint('$tag: 重置MainController失败: $e');
    }
  }
  
  @override
  void onInit() {
    super.onInit();
    debugPrint('$tag: onInit - 控制器初始化');
  }
  
  @override
  void onReady() {
    super.onReady();
    debugPrint('$tag: onReady - 页面准备就绪');
  }
  
  @override
  void onClose() {
    debugPrint('$tag: onClose - 控制器销毁');
    super.onClose();
  }
}

